package com.example.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mapper.UserMapper;
import com.example.pojo.User;
import com.example.service.IUserService;
import com.example.vo.UserProfile;
import com.example.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

    @Autowired
    private UserMapper userMapper;

//    public UserVO toUserVO(User user) {
//        if (user == null) {
//            return null;
//        }
//        UserVO userVO = new UserVO();
//        userVO.setUserId(user.getUserId());
//        userVO.setPhone(user.getPhone());
//        userVO.setNickName(user.getNickName());
//        userVO.setSex(user.getSex());
//        userVO.setAge(user.getAge());
//        userVO.setSign(user.getSign());
//        userVO.setAvatar(user.getAvatar());
//        userVO.setLocation(user.getLocation());
//        return userVO;
//    }

    public UserVO login(String phone, String password) {
        User user = userMapper.findByPhoneAndPassword(phone, password);
        if (user != null) {
            return new UserVO(
                    user.getUserId(),
                    user.getPhone(),
                    user.getNickName(),
                    user.getSex(),
                    user.getAge(),
                    user.getSign(),
                    user.getAvatar(),
                    user.getLocation());
        } else {
            return null;
        }
    }


    public UserProfile getUserProfileById(Long userId){
        // 调用UserMapper的新方法，只查询昵称和头像
        User user = userMapper.selectUserProfileById(userId);
        if (user != null){
            // 从查询结果中提取信息，创建UserVO对象
            return new UserProfile(user.getNickName(), user.getAvatar());

        } else {
            return null;
        }
    }

    public List<User> findByPhone(String phone) {
        return userMapper.findByPhone(phone);
    }

    public List<User> findUserList() {
        return userMapper.findUserList();

    }

//    public boolean register(User user) {
//        // 检查用户名是否已存在（可选）
//        Optional<User> existingUser = userMapper.selectOneByUserName(user.getUserName());
//        if (existingUser.isPresent()) {
//            return false; // 用户名已存在
//        }
//
//        // 加密密码（假设有个encryptPassword方法用于加密）
//        user.setPassword(encryptPassword(user.getPassword()));
//
//        // 插入新用户到数据库
//        int result = userMapper.insert(user);
//        return result > 0; // 返回插入是否成功
//    }
//
//    // 密码加密方法（示例）
//    private String encryptPassword(String rawPassword) {
//        // 这里仅作示例，实际中应使用安全的哈希加盐算法
//        // 如BCryptPasswordEncoder、SCryptPasswordEncoder等
//        return "encrypted_" + rawPassword; // 简单模拟加密过程
//    }
}
